/*
 * graphFunctions.h
 *
 *  Created on: 01/06/2011
 *      Author: Jonatas Lopes de Paiva
 *
 *  Define as funcoes necessarias para manipular um grafo.
 */

#ifndef GRAPHFUNCTIONS_H_
#define GRAPHFUNCTIONS_H_

#include <stdlib.h>

#include "types.h"

/*
 * Cria uma estrutura Grafo vazio. Sem nenhum vertice, apenas
 * um ponteiro para uma nova estrutura.
 * */
Grafo *criaGrafo();

/*
 * Insere uma aresta entre dois vertices. Caso o vertice Origem nao exista
 * ele e criado e inserido no grafo, o mesmo com o destino.
 *
 * A funcao retorna 1 caso haja sucesso na operacao. Retorna 0 caso a aresta seja
 * repetida.
 * */
int	insereAresta(int verticeOrigem, int verticeDestino, int custo,
				Grafo *grafo);

/*
 * Funcao que destroi um grafo, desalocando todas as entidades envolvidas.
 * */
void destroyGrafo(Grafo *grafo);

#endif /* GRAPHFUNCTIONS_H_ */
